package com.cbw.utils;

import com.cbw.bean.Book;
import java.io.*;
import java.util.ArrayList;

public class IOUtil {
    //IO功能：从文本中读取数据,将数据存储到文本中
    //序列化方法,把集合写到文本去
    private static File file = new File("图书信息.txt");

    /**
     * 必须要注意：list中的实体类对象必须实现序列化接口
     *
     * @param list
     */
    public static void writeToFile(ArrayList<Book> list) {
        try(ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(file))) {
            oos.writeObject(list);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //读文本，读成一个集合
    public static ArrayList<Book> readFromFile() {
        //第一次读，有可能文本还不存在，不能读
        if (!file.exists() || file.length() == 0) return new ArrayList<>();
        InputStream in;
        ArrayList<Book> list = new ArrayList<>();
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file))) {
            list = (ArrayList<Book>) ois.readObject();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return list;
    }
}